# -*- coding: utf-8 -*-
import re
import time

class NoGui(object):
    def __init__(self):
        self.login = None
        self.list  = None
        self.index = 0

    def set_login(self, login):
        self.login = login
        print u"Logged in as {0}".format(login)

    def set_list(self, lsto):
        """
        Laittaa titlelistan `lsto` sivulistaan ja lista-jäsenmuuttujaan.
        
        @p lsto (ArtLista) 
        """
        if lsto:
            self.lista = lsto
#            self.current = lsto[0]




    def run(self):
        self.index = 0
        while True:
            uusitxt = self.lataa_sivu(self.lista.get_entry_at(self.index))
            if uusitxt != None:
                tallenna(uusitxt)
            self.index = self.index+1


    def lataa_sivu(self, title):
        print u"haetaan: " + title
        self.currentRev = self.lista.get_wikitext(title)
        self.currentTitle = title

        if not self.currentRev:
            uusi_sivu = True
            print u"Sivua ei ole"
            wikiteksti = None
        else:
            uusi_sivu = False
            wikiteksti = self.currentRev['*']
        
        omateksti, summary = "", ""
        # Editoidaan olemassa olevaa sivua.
        if not uusi_sivu:
            omateksti, summary = self.lista.get_modified(title, wikiteksti) 
        
        # Katsotaan onko teksti muuttunut.
        if omateksti and wikiteksti:  
            if omateksti.strip() == wikiteksti.strip():
                tuottelias = False
            else:
                tuottelias = True
        # luotu uusi sivu
        elif omateksti and not wikiteksti:
            tuottelias = True
        else:
            tuottelias = False

        if tuottelias:
            print u"Oltiin tuottelias."
        else:
            print u"Ei oltu tuottelias."

        # Asetetaan tallennustimeri tai
        # siirrytään seuraavan, jos tekstille ei tehty mitään tai
        # sivua ei ollut.
        if tuottelias:
            print u"timeri päälle"
            # yhdenkerran timeri
            time.sleep(1)
            print u"timeri päällä"
            return omateksti
        else:
            time.sleep(1)
            return None

    def tallennus(self, wtxt):
        """
        Lähettää muutokset palvelimelle.
        """
        def captcha_cb(id,  url):
            """
            Captchaa kyselevä callback.
            """
            print u"Captcha {0}: {1}".format(id, url)
            var = raw_input(u"Vastaus: ")
            if var != "":
                return str(var)
            return None
                    
        print u"Tallennus"
        simulate = True
        title = self.currentTitle
        time = None
        if self.currentRev and 'timestamp' in self.currentRev:
            time  = self.currentRev['timestamp']
        comm  = komm
        minor = False

        if simulate or self.lista.edit_page(title, wtxt, time, comm, captcha_cb, minor):
            print u"Tallentaminen onnistui."
        else:
            print u"Tallennus epäonnistui."









